package dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;

import modele.Commune;
import modele.Province;
import modele.Region;

import services.persistance.BaseDAO;

public class CommuneDao {
	
	
	public static List getListeCommunes(long idAdmin)
	{
		List liste = new ArrayList<>();
//		liste.add(idAdmin);
//		liste.add("rCegion");
		return BaseDAO.getInstance().getListObject("queryListeNomCommunes",liste);

	}
	public static void ajouterCommune(Commune commune) {
		BaseDAO.getInstance().ajouter(commune);
	}
	
	public static void supprimerCommune(Commune commune) {
		BaseDAO.getInstance().supprimer(commune);
	}
	
	public static void modifierCommune(Commune commune) {
		BaseDAO.getInstance().modifier(commune);
	}
	public static List getCommunesProvince(long idProvince)
	{
		List liste = new ArrayList<>();
		liste.add(idProvince);
		return BaseDAO.getInstance().getListObject("queryCommunesProvince",liste);

	}
	
	public static List getCommunesRegion(long idRegion)
	{
		List liste = new ArrayList<>();
		liste.add(idRegion);
		return BaseDAO.getInstance().getListObject("queryCommunesRegion",liste);

	}
	
	public static Commune getCommune(long idCommune) {
		return (Commune) BaseDAO.getInstance().getObject(Commune.class, idCommune);
	}
	
	public static ArrayList<Commune> rechercherCommunesParCriteresParAdmin(Commune commune)
	{
		Criteria criteria = BaseDAO.getInstance().getSession().createCriteria(Commune.class);
		criteria.add(Restrictions.like("nom", "%"+ commune.getNom() +"%"));
		criteria.add(Restrictions.like("description", "%"+ commune.getDescription() +"%"));
//		criteria.add(Restrictions.eq("population", region.getPopulation()));
		criteria.createCriteria("administrateur").add(Restrictions.eq("identifiant", commune.getAdministrateur().getIdentifiant()));
		
		return (ArrayList<Commune>) BaseDAO.getInstance().getListObjectByCriteria(criteria);
	}

}
